1. Field of the Invention
The present invention generally relates to computer systems, and more particularly to a graphical user interface (GUI) for a computer system which provides mouse-driven, dynamic customization of features of the interface such as pull-down menus, status bars, toolbars, and command items.
2. Description of Related Art
The basic structure of a conventional computer system 10 is shown in FIG. 1. Computer system 10 has at least one central processing unit (CPU) or processor 12 which is connected to several peripheral devices, including input/output devices 14 (such as a display monitor, keyboard, and graphical pointing device for the user interface, and a permanent memory device such as a hard disk for storing the computer""s operating system and user programs), and a temporary memory device 18 (such as random access memory or RAM) that is used by processor 12 to carry out program instructions. Processor 12 communicates with the peripheral devices by various means, including a bus 20 or a direct channel 22. Computer system 10 may have many additional components which are not shown, such as serial and parallel ports for connection to, e.g., modems or printers. Those skilled in the art will further appreciate that there are other components that might be used in conjunction with those shown in the block diagram of FIG. 1; for example, a display adapter connected to processor 12 might be used to control a video display monitor, and a memory controller may be used as an interface between temporary memory device 18 and processor 12. Computer system 10 also includes firmware 24 whose primary purpose is to seek out and load an operating system from one of the peripherals (usually the permanent memory device) whenever the computer is first turned on.
With further reference to FIG. 2, conventional computer systems often employ a graphical user interface (GUI) to present information to the user. In the example of FIG. 2, a generic application program entitled xe2x80x9cDocument Managerxe2x80x9d is presented by the GUI as a primary application window (parent window) 26 on a display device 28 (i.e., video monitor). In this example, the application window has several secondary, enclosed windows (child windows) 30, 32 and 34 which depict the contents of various files that are handled by the program. A menu bar 36 with a standard set of commands, a toolbar 38, and a status bar 39 may also be provided as part of the GUI, to simplify manipulation and control of the objects (e.g., text, charts and graphics) within the child windows.
Toolbars can be provided as rows or columns, and have several buttons comprising textual icons, non-textual (graphic) icons, or icons having both graphic and textual elements. The depicted toolbar 38 includes, for example, three common edit-type buttons 40, 42 and 44 used respectively to xe2x80x9ccut,xe2x80x9d xe2x80x9ccopyxe2x80x9d and xe2x80x9cpastexe2x80x9d file objects.
Each of these buttons can be easily activated using the graphical pointer 46 controlled by a pointing device (e.g., mouse) connected to the computer which is manually actuated.
Status bar 39 includes a message field providing an indication of, e.g., the current program state, or object attributes (such as the current font to be used for textual objects). The message changes as various objects or commands are selected. Sometimes programmers find it useful to include additional action objects, or buttons, on the status bar. Since status messages are typically less than the full length of the bar, these additional buttons take up otherwise unused space. Two buttons 45 and 47 are shown with status bar 39.
As further seen in FIG. 3, when a given word on the menu command line 36 is activated, the GUI displays a pull-down menu, such as pull-down menu 48. A pull-down menu has several lines, and a given line can provide a single command or provide a link to a further pull-down menu. A pull-down menu can offer even more helpful information by indicating, on the corresponding lines, special keystrokes or keystroke combinations that can be used to activate the pull-down commands even when the pull-down menu is not being displayed. FIG. 3 also illustrates how the message on status bar 39 changes when the xe2x80x9cEditxe2x80x9d command is selected, to read 37 Change this document (undo, undelete, cut, copy, paste, . . . )xe2x80x9d. The pull-down menu items, toolbar icons, and status bar buttons are generally referred to herein as xe2x80x9ccommand items.xe2x80x9d
In graphical applications it is very common for there to be a one-to-one mapping between individual menu bar pulldowns and toolbar items. For instance, if the user selects the xe2x80x9cEditxe2x80x9d feature on command line 36 (using either the pointing device or the keyboard), pull-down menu 48 is displayed, and includes pulldowns xe2x80x9cUndo,xe2x80x9d xe2x80x9cCut,xe2x80x9d xe2x80x9cCopy,xe2x80x9d xe2x80x9cPaste,xe2x80x9d xe2x80x9cClear,xe2x80x9d xe2x80x9cFind,xe2x80x9d and xe2x80x9cReplacexe2x80x9d (the underlined letters in these words correspond to the keystrokes on the keyboard which can be used to select the pulldowns while the pull-down menu is displayed). Of these seven pull-down items, three of them thus correspond to toolbar items;
namely, the second, third and fourth lines respectively correspond to buttons 40, 42 and 44. The other four lines on pull-down menu 48 have no corresponding buttons in the depicted toolbar 38, although many application programs allow the user to customize toolbars (e.g., add buttons for other pulldowns).
Pull-down menus, toolbars and status bars (generally referred to herein as xe2x80x9ccommand structuresxe2x80x9d) offer a mechanism for executing special program commands. However, in today""s complicated applications, there are often functions presented via the user interface which are not regularly used, taking up display area, and possibly confusing the end user. There are also valuable functions which are not easily accessible. Present GUIs do not present an easy or intuitive way to allow end users (or system administrators) to tailor the user interface so that it makes sense and is more efficient for them.
Although many applications allow some level of customization of the interface, this functionality is limited. For example, alternate pull-down menus may be provided with short versus long menus, or advanced versus novice menus, but the alternate menus are restricted to certain preselected commands. Status bars can similarly allow the presence or absence of only certain preselected items, with no positional control. Toolbars can be modified to include different items, and allow some positional control, but the current methods involve displaying a separate window wherein the user can select items from an xe2x80x9cavailable itemxe2x80x9d list box and add them to a xe2x80x9cdisplayed itemsxe2x80x9d list box, or use check-boxes to select the items desired for the toolbar. Once the user is done, an xe2x80x9cOKxe2x80x9d button in this window is selected, and the application GUI (toolbar, menu, or status bar) is then updated with the new item(s). This form of user control is indirect and the visual feedback is delayed. There is also very limited function capability provided to allow an administrator to create and maintain a customized, user interface layout. The few applications that provide for some level of administrator customization provide it through macro language programming, rather than direct manipulation.
In light of the foregoing, it would be desirable to devise an improved method of dynamically customizing menus, status areas, or tool bars of an application. It would be further advantageous if the method were to allow an administrator to create different customized versions of a product tailored to different users, and then preserve these altered user interfaces. For example, a systems administrator could create different interfaces for users with different security privileges or different skill levels.
It is therefore one object of the present invention to provide an improved graphical user interface (GUI) having command structures such as pull-down menus, toolbars and status bars.
It is another object of the present invention to provide such a GUI which allows the simple and intuitive customization of such command structures.
It is yet another object of the present invention to provide such a GUI which allows a system administrator to create and safeguard different customized versions of the command structures for different users.
The foregoing objects are achieved in a computer system generally comprising a display device, a pointing device (mouse), and program instructions for generating a graphical user interface (GUI) on the display device. The GUI includes a window having a command structure, and further including a graphical pointer controlled by the pointing device, wherein the program dynamically modifies the command structure in response to direct manipulation of the command structure using the graphical pointer. The command structure may be, e.g., a toolbar, a pull-down menu, or a status bar. These structures may be modified using a direct manipulation xe2x80x9cdrag-and-dropxe2x80x9d procedure familiar to mouse users. The command item can be dragged from a first location within the command structure to a second location within the same command structure, simply moving the position of the item within that structure. The command item can also be dragged from a first location within the command structure to a second location outside of the command structure, such as to a trash bin provided by the GUI (for deletion of the item), or to a second command structure (for moving or copying the item, e.g., from a toolbar to a pull-down menu). In the latter case, a pop-up window may be generated by the GUI to allow a user to select a modification operation to apply to the command item (i.e., the xe2x80x9cMovexe2x80x9d operation versus the xe2x80x9cCopyxe2x80x9d operation).
The customized version of the GUI which is created by modification of the toolbars, status bars, or pull-down menus can be saved, and can be further maintained with password protection, allowing a system administrator to lock the GUI in order to provide more reliable support for various user groups. The new GUI structure remains in effect until it is changed or reset to the application""s original default settings.